## 第一阶段，编译
# 基础镜像
FROM golang:1.21.4-alpine as builder

# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  && echo "Asia/Shanghai" /etc/timezone \
  && date -R

# 使用国内源，如果安装依赖
# RUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.8/main" > /etc/apk/repositories
# RUN echo -e http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories    \
#    && apk add --no-cache xxxx

COPY ./src /app
WORKDIR /app

VOLUME ["/app"]

# export GOPROXY=https://mirrors.aliyun.com/goproxy/ \    
# 打包二进制&&增加执行权限
RUN  go mod tidy \    
  && export GOARCH=amd64 \    
  && export GOOS=linux \    
  && go build -o ./dist/demo  \    
  && chmod +x ./dist/demo

# 若仅构建，第一次只需运行
# docker build -t godemo .
# 第二次构建只需再次运行容器，由于容器没有主进程，运行编译完成便结束自动退出
# docker run --name=godemo -v ./dist:/app/dist -d godemo:latest

## 第二阶段，构建最终镜像
FROM alpine:latest

WORKDIR /app

COPY --from=builder /app/dist /app

# # 容器入口, 执行命令
CMD ["./demo"]

# docker run --name=godemo -d godemo:latest